// 导入配置（调整导入顺序，相关配置放一起）
import express from 'express';
import cors from "cors";
import morgan from 'morgan';
import compression from 'compression';
import router from '#src/routes/index.js';
// 修改为正确路径
import {logger} from '#src/common/utils/logger.js';
import configManager from '#src/config/config.js';
import {errorHandler} from '#src/middleware/errorHandler.js';
import helmet from 'helmet';

const app = express();
import {userInputSanitizer} from "#src/middleware/sanitizationMiddleware.js";

// 基础中间件配置
app.use(express.urlencoded({ extended: true }));//解决post请求数据乱码
app.use(express.json({limit: '10mb'}));  // 添加请求体大小限制
app.use(express.urlencoded({extended: true}));  // 支持 URL 编码的请求体

// 在现有cors中间件之后添加
app.use(cors());
// 新增安全中间件
app.use(helmet());
app.use(helmet.hsts({
    maxAge: 31536000,    // 强制HTTPS一年
    includeSubDomains: true
}));

// 性能和日志中间件
app.use(compression());
app.use(morgan("dev"));


app.use('/html', express.static('public/html'));
app.use('/library', express.static('public/library'));

// API 路由
app.use('/api', userInputSanitizer, router);

// 服务启动
app.listen(configManager.envConfig.port, () => {
    // 修改这行
    logger.info(`服务启动成功: http://localhost:${configManager.envConfig.port}/api/`);
});

// 注意：错误处理中间件必须注册在所有路由之后
app.use(errorHandler);